(function a() {

    let i = 1

    setTimeout(() => {
        i ++
        console.log(i); // 宏任务4
    }, 0);

    new Promise((resolve) => {
        console.log(1); // 同步：1
        resolve(2)
    }).then(function (res) {
        setTimeout(() => {
            console.log(i + ~~!!i); // 宏任务5

        }, 10)
        i = 3
        console.log(res); // 微任务promise结果2
        console.log(i); // 与上一个微任务先后打印，3
    })

})()

